package com.anpy.album.service;

import com.anpy.album.dto.CalendarEventDTO;
import com.anpy.album.entity.CalendarEvent;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 日历事件服务接口
 */
public interface CalendarEventService {
    
    /**
     * 创建日历事件
     * 
     * @param eventDTO 日历事件DTO
     * @return 创建的日历事件
     */
    CalendarEventDTO createEvent(CalendarEventDTO eventDTO);
    
    /**
     * 更新日历事件
     * 
     * @param eventDTO 日历事件DTO
     * @return 更新后的日历事件
     */
    CalendarEventDTO updateEvent(CalendarEventDTO eventDTO);
    
    /**
     * 删除日历事件
     * 
     * @param id 事件ID
     * @return 是否删除成功
     */
    boolean deleteEvent(Long id);
    
    /**
     * 根据ID获取日历事件
     * 
     * @param id 事件ID
     * @return 日历事件DTO
     */
    CalendarEventDTO getEventById(Long id);
    
    /**
     * 根据用户ID获取所有日历事件
     * 
     * @param userId 用户ID
     * @return 日历事件DTO列表
     */
    List<CalendarEventDTO> getEventsByUserId(Long userId);
    
    /**
     * 根据用户ID和时间范围获取日历事件
     * 
     * @param userId 用户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 日历事件DTO列表
     */
    List<CalendarEventDTO> getEventsByUserIdAndTimeRange(Long userId, LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 根据用户ID和事件类型获取日历事件
     * 
     * @param userId 用户ID
     * @param eventType 事件类型
     * @return 日历事件DTO列表
     */
    List<CalendarEventDTO> getEventsByUserIdAndEventType(Long userId, Integer eventType);
    
    /**
     * 根据用户ID获取指定日期的日历事件
     * 
     * @param userId 用户ID
     * @param date 日期
     * @return 日历事件DTO列表
     */
    List<CalendarEventDTO> getEventsByUserIdAndDate(Long userId, LocalDateTime date);
}
